package com.demo.java.OD251_300.OD274;

import java.util.Arrays;
import java.util.Scanner;

/**
 * @author bug菌
 * @Source 公众号：猿圈奇妙屋
 * @des： 【最佳对手】问题
 * @url： https://blog.csdn.net/weixin_43970743/article/details/146074570
 */
public class OdMain {
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);

        int n = scanner.nextInt();  // 读取队伍个数
        int d = scanner.nextInt();  // 读取允许的最大实力差距

        int[] arr = new int[n];  // 存储选手实力值
        for (int i = 0; i < n; i++) {
            arr[i] = scanner.nextInt();  // 读取每个选手的实力值
        }

        System.out.println(getMinTotalDiff(n, d, arr));  // 计算并输出结果
    }

    public static int getMinTotalDiff(int n, int d, int[] arr) {
        Arrays.sort(arr);  // 对选手实力进行排序，使相邻选手的差值最小

        int totalDiff = 0;  // 记录所有匹配成功的实力差值之和
        int count = 0;  // 记录匹配成功的队伍数

        for (int i = 1; i < n; i++) {  // 遍历数组，寻找匹配对
            int diff = arr[i] - arr[i - 1];  // 计算相邻选手的实力差值
            if (diff <= d) {  // 如果差值符合最大实力差距
                totalDiff += diff;  // 累加实力差值
                count++;  // 记录匹配成功的队伍数
                i++;  // 跳过下一个元素，确保不重复匹配
            }
        }

        return (count > 0) ? totalDiff : -1;  // 如果有匹配对，返回最小实力差值总和，否则返回 -1
    }
}